package com.ruoyi.basic.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.basic.domain.TbCategoryReal;
import com.ruoyi.common.core.domain.Ztree;

import java.util.List;


/**
 * @author zyxis
 */
public interface ITbCategoryRealService extends IService<TbCategoryReal>
{
    /**
     * 列表条件查询
     * @param tbCategoryReal
     * @return
     */
    List<TbCategoryReal> listByCondition(TbCategoryReal tbCategoryReal);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    boolean deleteByIds(String ids);

    /**
     * 校验分类名称是否唯一
     * @param tbCategoryReal
     * @return
     */
    String checkCategoryNameUnique(TbCategoryReal tbCategoryReal);

    /**
     * 根据ID查询所有子分类（正常状态）
     * @param categoryRealId
     * @return
     */
    int selectNormalChildrenCategoryById(Long categoryRealId);

    /**
     * 查询分类数
     * @param parentId
     * @return
     */
    int selectCategoryCount(Long parentId);

    /**
     * 查询分类是否存在定额工日单价
     * @param id
     * @return
     */
    boolean checkCategoryExistDailyUnitPrice(Long id);

    /**
     * 查询分类管理树
     *
     * @param tbCategoryReal 分类信息
     * @return 所有分类信息
     */
    List<Ztree> selectCategoryTree(TbCategoryReal tbCategoryReal);

    /**
     * 查询分类管理树（排除下级）
     * @param tbCategoryReal
     * @return
     */
    List<Ztree> selectDeptTreeExcludeChild(TbCategoryReal tbCategoryReal);

    /**
     * 新增分类
     * @param tbCategoryReal
     * @return
     */
    boolean saveCategory(TbCategoryReal tbCategoryReal);

    /**
     * 编辑分类
     * @param tbCategoryReal
     * @return
     */
    boolean updateCategory(TbCategoryReal tbCategoryReal);

    /**
     * 根据ID查询分类
     * @param id
     * @return
     */
    TbCategoryReal getCategoryById(Long id);
}
